﻿using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Micro.Extensions.DDD.Events
{
    /// <summary>
    /// 事件模型 抽象基类，继承 INotification
    /// 也就是说，拥有中介者模式中的 发布/订阅模式
    /// 同时继承了Messgae 也就是继承了 请求/响应模式
    /// </summary>
    public abstract class Event : Message, INotification
    {
        /// <summary>
        /// 时间戳
        /// </summary>
        public DateTimeOffset Timestamp { get; private set; }

        /// <summary>
        /// 每一个事件都是有状态的
        /// </summary>
        protected Event()
        {
            Timestamp = DateTimeOffset.Now;
        }
    }
}
